package genedit.model;

import java.util.Set;

/**
 * Klasa zadužena za rad sa kopiranjem elemenata paketa i dokumenata.
 * 
 * @author Nikola
 * @version 1.0 18/12/13
 */
public class HierarchyClipboard {
	/**
	 * Singleton instanca klase
	 */
	private static HierarchyClipboard instance;

	/**
	 * Set kopiranih elemenata hijerarhije.
	 */
	private Set<HierarchyElement> copiedElements;

	public static HierarchyClipboard getInstance() {
		if (instance == null)
			instance = new HierarchyClipboard();
		return instance;
	}

	private HierarchyClipboard() {
	}

	public Set<HierarchyElement> getCopiedElements() {
		if (copiedElements == null)
			copiedElements = new java.util.HashSet<HierarchyElement>();
		return copiedElements;
	}

	public java.util.Iterator<HierarchyElement> getIteratorCopiedElements() {
		if (copiedElements == null)
			copiedElements = new java.util.HashSet<HierarchyElement>();
		return copiedElements.iterator();
	}

	public void setCopiedElements(java.util.Collection<HierarchyElement> newCopiedElements) {
		removeAllCopiedElements();
		for (java.util.Iterator<HierarchyElement> iter = newCopiedElements.iterator(); iter
				.hasNext();)
			addCopiedElements((HierarchyElement) iter.next());
	}

	public void addCopiedElements(HierarchyElement newHierarchyElement) {
		if (newHierarchyElement == null)
			return;
		if (this.copiedElements == null)
			this.copiedElements = new java.util.HashSet<HierarchyElement>();
		if (!this.copiedElements.contains(newHierarchyElement))
			this.copiedElements.add(newHierarchyElement);
	}

	public void removeCopiedElements(HierarchyElement oldHierarchyElement) {
		if (oldHierarchyElement == null)
			return;
		if (this.copiedElements != null)
			if (this.copiedElements.contains(oldHierarchyElement))
				this.copiedElements.remove(oldHierarchyElement);
	}

	public void removeAllCopiedElements() {
		if (copiedElements != null)
			copiedElements.clear();
	}

}